package com.learn.activiti.chapter04.commandPattern;

/**
 * 使用 Broker 类来接受并执行命令
 * <p>
 * 请求以命令的形式包裹在对象中，并传给调用对象。调用对象寻找可以处理该命令的合适的对象，并把该命令传给相应的对象，该对象执行命令。
 * </p>
 * <p> 意图：将一个请求封装成一个对象，从而使您可以用不同的请求对客户进行参数化。
 * <p> 好处：1.降低了系统耦合度。2.新的命令可以很容易添加到系统中去
 *
 * https://www.runoob.com/design-pattern/command-pattern.html
 */
public class CommandPatternDemo {

    public static void main(String[] args) {
        Stock abcStock = new Stock();

        BuyStock buyStockOrder = new BuyStock(abcStock);
        SellStock sellStockOrder = new SellStock(abcStock);
        OtherStock otherStock = new OtherStock(abcStock);

        Broker broker = new Broker();
        broker.takeOrder(buyStockOrder);
        broker.takeOrder(sellStockOrder);
        broker.takeOrder(otherStock);

        broker.placeOrders();
    }

}
